package com.fqcar.fqdf.view;

import android.content.Context;
import android.graphics.Color;

import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.CircleOptions;
import com.baidu.mapapi.map.Overlay;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.map.PolygonOptions;
import com.baidu.mapapi.map.Stroke;
import com.baidu.mapapi.map.TextOptions;
import com.baidu.mapapi.model.LatLng;
import com.fqcar.fqdf.R;
import com.fqdf.framework.android.util.AndroidUtils;

import java.util.List;

/**
 * Created by vickyzhou on 2017/12/22.
 */

public class MapOverlayHelper {
  public final static int DEFAULT_STROKE_WIDTH = 4;
  public final static Stroke DEFAULT_STROKE = new Stroke(DEFAULT_STROKE_WIDTH, Color.BLUE);

  /**
   * 文字类的overlay绘制
   *
   * @param latLng 文字位置
   * @param textContent 文字内容
   * @param textColorRes 文字颜色
   * @param textSize 文字大小
   * @param rotate 旋转角度
   */
  public static Overlay addTextOverlay(BaiduMap baiduMap, LatLng latLng, String textContent,
                                       int textColorRes, int textSize, int rotate) {
    OverlayOptions textOptions = new TextOptions().text(textContent)
        .fontColor(textColorRes)
        .position(latLng)
        .rotate(rotate)
        .fontSize(textSize)
        .align(TextOptions.ALIGN_CENTER_HORIZONTAL, TextOptions.ALIGN_CENTER_VERTICAL);

    return baiduMap.addOverlay(textOptions);
  }

  public static Overlay addTextOverlay(BaiduMap baiduMap, LatLng latLng, String textContent,
                                       int textColorRes, int textSize) {
    return addTextOverlay(baiduMap, latLng, textContent, textColorRes, textSize, 0);
  }

  /**
   * 多边形电子围栏绘制
   *
   * @param dataList 多边形点坐标
   * @param fillColorRes 填充色
   * @param stroke 边缘线颜色和宽度
   */
  public static Overlay addPloyOverlay(BaiduMap baiduMap, List<LatLng> dataList, int fillColorRes,
                                       Stroke stroke) {

    OverlayOptions ployOption = new PolygonOptions().fillColor(fillColorRes)
        .stroke(stroke == null ? DEFAULT_STROKE : stroke)
        .points(dataList);
    return baiduMap.addOverlay(ployOption);
  }

  /**
   * 绘制圆形电子围栏
   *
   * @param latLng 圆形中心点
   * @param fillColorRes 电子围栏填充颜色资源
   * @param radius 半径长度 M 米 单位
   * @param stroke 边缘线颜色和宽度
   */
  public static Overlay addCircleOverlay(BaiduMap baiduMap, LatLng latLng, int fillColorRes, int radius,
                                         Stroke stroke) {
    OverlayOptions circleOptions = new CircleOptions().center(latLng)
        .fillColor(fillColorRes)
        .radius(radius)
        .stroke(stroke == null ? DEFAULT_STROKE : stroke);
    return baiduMap.addOverlay(circleOptions);
  }

  /**
   * 电子围栏设置配置--绿色
   */
  public static void addDefaultPloyOverlay(Context context, BaiduMap baiduMap, List<LatLng> dataList) {
    addPloyOverlay(baiduMap, dataList, AndroidUtils.getColor(context, R.color.nD90DB95F),
        new Stroke(DEFAULT_STROKE_WIDTH, AndroidUtils.getColor(context, R.color.n0db95f)));
  }
}
